作者:荆怡婷151 | 来源:互联网 | 2023-09-23 17:05
篇首语:本文由编程笔记#小编为大家整理,主要介绍了算法5956.找出数组中的第一个回文字符串(java/c/c++/python/go/rust)相关的知识,希望对你有一定
篇首语:本文由编程笔记#小编为大家整理,主要介绍了算法5956. 找出数组中的第一个回文字符串(java / c / c++ / python / go / rust)相关的知识,希望对你有一定的参考价值。
文章目录
- 5956. 找出数组中的第一个回文字符串:
- 样例 1:
- 样例 2:
- 样例 3:
- 提示:
- 分析
- 题解
- java
- c
- c++
- python
- go
- rust
- 原题传送门:https://leetcode-cn.com/problems/find-first-palindromic-string-in-the-array/
5956. 找出数组中的第一个回文字符串:
给你一个字符串数组 words
,找出并返回数组中的 第一个回文字符串 。如果不存在满足要求的字符串,返回一个 空字符串 ""
。
回文字符串 的定义为:如果一个字符串正着读和反着读一样,那么该字符串就是一个 回文字符串 。
样例 1:
输入:
words = ["abc","car","ada","racecar","cool"]
输出:
"ada"
解释:
第一个回文字符串是 "ada" 。
注意,"racecar" 也是回文字符串,但它不是第一个。
样例 2:
输入:
words = ["notapalindrome","racecar"]
输出:
"racecar"
解释:
第一个也是唯一一个回文字符串是 "racecar" 。
样例 3:
输入:
words = ["def","ghi"]
输出:
""
解释:
不存在回文字符串,所以返回一个空字符串。
提示:
- 1 <&#61; words.length <&#61; 100
- 1 <&#61; words[i].length <&#61; 100
- words[i] 仅由小写英文字母组成
分析
- 面对这道算法题目&#xff0c;我陷入了沉思。
- 感觉就是遍历数组&#xff0c;然后遍历字符&#xff0c;判断是否回文&#xff0c;没什么可以大优化的地方。
- 头尾双指针&#xff0c;判断字符是否相等&#xff0c;指针逐渐向中间重合。
题解
java
class Solution
public String firstPalindrome(String[] words)
for (String word : words)
int l &#61; 0;
int r &#61; word.length() - 1;
while (l < r
&& word.charAt(l) &#61;&#61; word.charAt(r))
l&#43;&#43;;
r--;
if (l >&#61; r)
return word;
return "";
c
char * firstPalindrome(char ** words, int wordsSize)
for (int i &#61; 0; i < wordsSize; &#43;&#43;i)
char* word &#61; words[i];
int l &#61; 0;
int r &#61; strlen(word) - 1;
while (l < r
&& word[l] &#61;&#61; word[r])
l&#43;&#43;;
r--;
if (l >&#61; r)
return word;
return "";
c&#43;&#43;
class Solution
public:
string firstPalindrome(vector<string>& words)
for (string& word: words)
int l &#61; 0;
int r &#61; word.size() - 1;
while (l < r
&& word[l] &#61;&#61; word[r])
l&#43;&#43;;
r--;
if (l >&#61; r)
return word;
return "";
;
python
class Solution:
def firstPalindrome(self, words: List[str]) -> str:
return next((word for word in words if word &#61;&#61; word[::-1]), &#39;&#39;)
go
func firstPalindrome(words []string) string
for _, word :&#61; range words
l :&#61; 0
r :&#61; len(word) - 1
for l < r && word[l] &#61;&#61; word[r]
l&#43;&#43;
r--
if l >&#61; r
return word
return ""
rust
impl Solution
pub fn first_palindrome(words: Vec<String>) -> String
for word in words.iter()
let bs &#61; word.as_bytes();
let mut l &#61; 0;
let mut r &#61; word.len() - 1;
while l < r && bs[l] &#61;&#61; bs[r]
l &#43;&#61; 1;
r -&#61; 1;
if l >&#61; r
return word.clone();
"".to_string()
原题传送门&#xff1a;https://leetcode-cn.com/problems/find-first-palindromic-string-in-the-array/
非常感谢你阅读本文~
欢迎【&#x1f44d;点赞】【⭐收藏】【&#x1f4dd;评论】~
放弃不难&#xff0c;但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子&#xff1a;https://le-yi.blog.csdn.net/ 博客原创~